<?php
include_once '../gerenciadores/AutoloadGerenciadores.php';


class RepositorioMaterial{
	private static $instancia;
	
	private function __construct(){
	}
	
	public static function getInstancia(){
		if(!isset(self::$instancia)){
			$class = __CLASS__;
			self::$instancia = $class;
		}
		return self::$instancia;
	}
	
	public static function cadastraMateria(Material $material){
		$e = new MaterialCadastraException();
		
		if(!self::existeMaterial($material)){
				$sql = "INSERT INTO `t_material`
				(`descricao`, `quantidade`)
				 VALUES ('";
					$sql = $sql.$material->getDescricao()."', '";
					$sql = $sql.$material->getQuantidade();
					$sql = $sql."');";
					
					Conexao::executaSql($sql);
		
			}else{
				
					echo $e->getMessage();
			}	
		}
		
	
	public static function getMaterial($idMaterial){
		$material = new Material();
		if(!is_null($idMaterial)){
			$sql = "SELECT * FROM `t_material` WHERE idmaterial='".$idMaterial."';";
		
			
			$tabela = Conexao::tabelaSql($sql);
			
			foreach ($tabela as $linha){
				$material->setId($linha["idmaterial"]);
				$material->setDescricao($linha["descricao"]);
				$material->setQuantidade($linha["quantidade"]);
			}
			
		}
		return $material;
	}
	
	public static function deletaMaterial($idMaterial){
		try{
			if(!is_null($idMaterial)){
				$sql = "DELETE FROM `t_material` WHERE idmaterial = '".$idMaterial."';";
				Conexao::executaSql($sql);
			}	
		}
		catch (MaterialDeleteException $e){
			echo $e->getMessage();
		}
		
	}
	
	public static function atualizaMaterial(Material $material){
		$contador= 0;
		
		try{
			$sql = "UPDATE `t_material` SET ";
			if(!is_null($material->getDescricao())){
				$sql = $sql."`descricao`= '".$material->getDescricao();
				$contador++;
			}
			if(!is_null($material->getQuantidade())){
				if($contador>0){
					$sql=$sql."',";
				}
				$sql = $sql."`quantidade`='".$material->getQuantidade()."' ";
			}
			
			$sql = $sql."WHERE idmaterial = '".$material->getIdMaterial()."';";
			
			Conexao::executaSql($sql);
		}
		catch (MaterialAtualizaException $e){
			echo $e->getMessage();
		}
	}
	
	public static function exibeTabela(){
		$sql = "SELECT * FROM `t_material`;";
		$tabela = Conexao::tabelaSql($sql);
		
		$i=0;
		foreach($tabela as $linha){
			$material[$i] = self::getMaterial($linha['idmaterial']);
			$i++;
		}
		return $material;
	}
	
	private static function existeMaterial(Material $material){
		$sql = "SELECT * from t_material WHERE descricao LIKE '%".$material->getDescricao()."%';";
		$array = Conexao::tabelaSql($sql);
	
		if(count($array)>0){
			return true;
		}
		return false;
	}
	
	
	private static function converteData($data){
		if(!is_null($data)){
			$dataTab = split("/", $data);
			$dia = $dataTab[0];
			$mes = $dataTab[1];
			$ano = $dataTab[2];
			if(strlen($ano)>=4 && strlen($mes)==2 && strlen($dia)==2){
				$data = $ano."-".$mes."-".$dia;
			}else{
				self::__autoload("DataException");
				$e = new DataException();
				echo $e->getMessage();
			}
			return $data;
		}
	}
}
?>